import 'package:get/get.dart';
import 'package:flutter/material.dart';
import 'package:nyh_motorcade_app/constant/constant.dart';
import 'package:nyh_motorcade_app/entity/vehicle_info_entity.dart';
import 'package:nyh_motorcade_app/routes/routes.dart';
import 'package:nyh_motorcade_app/styles/colors.dart';
import 'package:nyh_motorcade_app/utils/format_utils.dart';
import 'package:nyh_motorcade_app/widgets/flexible_icon_text.dart';
import 'package:nyh_motorcade_app/widgets/highlight_rich_text.dart';
import 'package:nyh_motorcade_app/widgets/text_with_icon.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:nyh_motorcade_app/widgets/vehicle_icon.dart';

class VehicleItem extends StatelessWidget {
  final VehicleInfoItem entity;
  final String? keyword;
  final FocusNode? focusNode;

  VehicleItem(this.entity, {this.keyword, this.focusNode});

  @override
  Widget build(BuildContext context) {
    List<String> quotaList = [];
    if (entity.refuelQuota != null) {
      quotaList.add("限额：${FormatUtils.formatMoney(entity.refuelQuota)}${entity.unit ?? ""}/${entity.circle ?? ""}");
    }
    if (entity.remainQuota != null) {
      quotaList.add("剩余：${FormatUtils.formatMoney(entity.remainQuota)}${entity.unit ?? ""}/${entity.circle ?? ""}");
    }
    return Container(
      margin: EdgeInsets.only(left: 16.w, right: 16.w, bottom: 12.w),
      decoration: BoxDecoration(
        color: Colours.color_white,
        borderRadius: BorderRadius.circular(10.w),
      ),
      child: ClipRRect(
        borderRadius: BorderRadius.circular(10.w),
        child: Material(
          child: InkWell(
            onTap: () {
              if (focusNode != null) {
                focusNode!.unfocus();
              }
              Get.toNamed(Routes.vehicleDetails, arguments: entity.id, preventDuplicates: false);
            },
            child: Padding(
              padding: EdgeInsets.symmetric(vertical: 13.w, horizontal: 16.w),
              child: Row(
                crossAxisAlignment: CrossAxisAlignment.start,
                children: [
                  VehicleIcon(entity.type ?? "", entity.vehicleNumber ?? ""),
                  SizedBox(
                    width: 16.w,
                  ),
                  Expanded(
                    child: Column(
                      crossAxisAlignment: CrossAxisAlignment.start,
                      children: [
                        Row(
                          children: [
                            Flexible(
                              child: HighlightRichText(
                                text: entity.vehicleNumber ?? "",
                                highlightList: [keyword ?? ""],
                                highlightStyle: TextStyle(
                                  color: Colours.color_theme,
                                  fontSize: 16.sp,
                                  fontWeight: FontWeight.bold,
                                ),
                                normalStyle: TextStyle(
                                  color: Colours.color_text_theme,
                                  fontSize: 16.sp,
                                  fontWeight: FontWeight.bold,
                                ),
                              ),
                            ),
                            Visibility(
                              visible: (entity.belongToType ?? "").isNotEmpty,
                              child: Container(
                                margin: EdgeInsets.only(left: 8.w),
                                padding: EdgeInsets.only(left: 5.w, right: 5.w, bottom: 1.w),
                                decoration: BoxDecoration(
                                  color: (entity.belongToType ?? "") == Constant.OWN_VEHICLE ? Colours.color_34c759 : Colours.color_theme,
                                  borderRadius: BorderRadius.circular(5.w),
                                  border: Border.all(width: 1.w, color: (entity.belongToType ?? "") == Constant.OWN_VEHICLE ? Colours.color_34c759 : Colours.color_theme),
                                ),
                                child: Text(
                                  entity.belongToTypeName ?? "",
                                  style: TextStyle(
                                    color: Colours.color_white,
                                    fontSize: 10.sp,
                                  ),
                                ),
                              ),
                            ),
                            Visibility(
                              visible: (entity.type ?? "").isNotEmpty,
                              child: Container(
                                margin: EdgeInsets.only(left: 8.w),
                                padding: EdgeInsets.only(left: 5.w, right: 5.w, bottom: 1.w),
                                decoration: BoxDecoration(
                                  color: Colours.color_white,
                                  borderRadius: BorderRadius.circular(5.w),
                                  border: Border.all(width: 1.w, color: Colours.color_6f7082),
                                ),
                                child: Text(
                                  entity.typeName ?? "",
                                  style: TextStyle(
                                    color: Colours.color_6f7082,
                                    fontSize: 10.sp,
                                  ),
                                ),
                              ),
                            ),
                            Visibility(
                              visible: entity.status == 0,
                              child: Container(
                                margin: EdgeInsets.only(left: 8.w),
                                padding: EdgeInsets.only(left: 5.w, right: 5.w, bottom: 1.w),
                                decoration: BoxDecoration(
                                  color: Colours.color_cfcfd5,
                                  borderRadius: BorderRadius.circular(5.w),
                                  border: Border.all(width: 1.w, color: Colours.color_cfcfd5),
                                ),
                                child: Text(
                                  "已禁用",
                                  style: TextStyle(
                                    color: Colours.color_white,
                                    fontSize: 10.sp,
                                  ),
                                ),
                              ),
                            ),
                          ],
                        ),
                        SizedBox(
                          height: (entity.motorcadeName ?? "").isNotEmpty ? 5.w : 0,
                        ),
                        Visibility(
                          visible: (entity.motorcadeName ?? "").isNotEmpty,
                          child: TextWithIcon(
                            text: entity.motorcadeName ?? "",
                            textStyle: TextStyle(
                              color: Colours.color_6f7082,
                              fontSize: 12.sp,
                            ),
                            iconName: "images/ic_motorcade.png",
                            iconHeight: 14.w,
                            iconWidth: 14.w,
                            iconColor: Colours.color_6f7082,
                            textIconPadding: 5.w,
                          ),
                        ),
                        SizedBox(
                          height: (entity.subCompanyList ?? []).isNotEmpty ? 5.w : 0,
                        ),
                        FlexibleIconText(
                          icon: Image.asset(
                            "images/ic_company.png",
                            height: 14.w,
                            width: 14.w,
                            color: Colours.color_6f7082,
                          ),
                          textList: entity.subCompanyList,
                          iconTextPadding: 5.w,
                        ),
                        SizedBox(
                          height: quotaList.isNotEmpty ? 5.w : 0,
                        ),
                        FlexibleIconText(
                          textList: quotaList,
                          textStyle: TextStyle(color: Colours.color_text_theme, fontSize: 12.sp),
                        ),
                      ],
                    ),
                  ),
                ],
              ),
            ),
          ),
        ),
      ),
    );
  }
}
